<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>第三次实验-对象化编程</title>
</head>
<body>
    <script>
        console.log("189000526-谭静");
        //1.体验字面量方式创建对象
        // console.log("1.体验字面量方式创建对象");
        // var obj1 = {
        //     name: "刘备",
        //     sex: "男",
        //     run: function(){
        //         console.log("跑");
        //     }
        // }
        // console.log(obj1);

        // //2.将步骤1的代码改为使用Object方式创建
        // console.log("2.将步骤1的代码改为使用Object方式创建");
        // var obj2 = new Object();
        // obj2.name="刘备";
        // obj2.sex="男";
        // obj2.run=function(){
        //     console.log("跑");
        // }
        // console.log(obj2);

        // //3.将步骤1的代码改为使用工厂模式创建
        // console.log("3.将步骤1的代码改为使用工厂模式创建");
        // function createPerson(name, sex, run){
        //     var people = new Object();
        //     people.name = name;
        //     people.sex = sex;
        //     people.run = run;
        //     return people;
        // }
        // var obj3 = createPerson("刘备", "男", new Function(console.log("跑")));
        // obj3.run();
        // console.log(obj3.name);

        //4.体验使用构造函数创建对象
        // console.log("4.体验使用构造函数创建对象");
        // function Student(name, sex){
        //     this.name = name;
        //     this.sex = sex;
        //     this.run = function(){
        //         console.log(this.name + "跑");
        //     }
        // }
        // var obj5 = new Student("刘备","男");
        // obj5.run();
        // console.log(obj5);

        //5.体验使用原型模式创建对象
        // console.log("5.体验使用原型模式创建对象");
        // function Person(){
        //     Person.prototype.name = "刘备";
        //     Person.prototype.sex = "男";
        //     Person.prototype.run = function(){
        //         console.log(this.name + "跑");
        //     }
        // }
        // var obj6 = new Person();
        // console.log(obj6);
        // obj6.run();

        // //6.在实验报告中写成this指向谁，简要说明原因
        // console.log("6.在实验报告中写成this指向谁，简要说明原因");
        // function fun(){
        //     console.log(this);
        // }
        // fun();//因为是在全局环境下执行，所以这里的this指向Windows

        // //7.写一个Dog继承Animal的例子
        // console.log("7.写一个Dog继承Animal的例子");
        // function Animal(name){
        //     this.name = name;
        // }
        // function Dog(name, shape){
        //     Animal.call(this,name);
        //     this.shape = shape;
        // }
        // var obj7 = new Dog("小汪", "圆滚滚");
        // console.log(obj7.name + obj7.shape);
       
        // //8.在实验报告中写出该代码是如何实现继承的
        // console.log("8.在实验报告中写出该代码是如何实现继承的");
        // //这是一个组合继承方式
        // function Person1(name){
        //     this.name = name;
        // }
        // Person1.prototype.run = function(){
        //     console.log("跑");
        // }
        // function Worker(name, salary){
        //     Person1.call(this, name);//对象冒充，将Person1的属性继承过来
        //     this.salary = salary;
        // }
        // Worker.prototype = new Person1();//将Person1的方法继承过来
        // var obj8 = new Worker("赵云", 100);
        // console.log(obj8);

        // //9.体验使用原型实现继承
        // console.log("9.体验使用原型实现继承");
        // var person2 = {
        //     name: "刘备",
        //     sex:"男",
        //     run:function(){
        //         console.log("跑");
        //     }
        // }
        // var person3 = Object.create(person2);
        // console.log(person3);

        // //10.体验代码是如何实现继承的
        // console.log("10.体验代码是如何实现继承的");
        // function inheritPrototype(sFun, pFun){
        //     var myPrototype = new Object(pFun.prototype);
        //     myPrototype.constructor = sFun;
        //     sFun.prototype = myPrototype;
        // }
        // function Person4(name){
        //     this.name = name;
        // }
        // Person.prototype.run = function(){
        //     console.log("跑");
        // }
        // function Worker1(name, salary){
        //     Person.call(this, name);
        //     this.salary = salary;
        // }
        // inheritPrototype(Worker1, Person4);
        // var worker1 = new Worker1("赵云", 100);
        // console.log(worker1);
    </script>
    
</body>
</html>